package modelo.lugares;

import org.dom4j.DocumentException;

import modelo.pista.PistaFactory;
import modelo.geografia.Ciudad;
import modelo.pista.Pista;
import modelo.policia.grado.Grado;


public abstract class LugarPreguntable {

	protected Ciudad ciudadALaQueCorresponde;
	private Pista pistaSobreElLadron;
		
	public LugarPreguntable(Ciudad ciudad) {
		ciudadALaQueCorresponde = ciudad;
		pistaSobreElLadron = new Pista ("");
	}
	
	protected abstract Pista darPistaValida(Grado grado) throws DocumentException;
	
	protected Pista darPistaInvalida() throws DocumentException {
		//Al ser la misma para los tres lugares la defino aca
		Pista pista = PistaFactory.obtenerInstancia().crearPistaInvalida();		
		return pista;
	}
	protected Pista darPistaCercana() throws DocumentException {
		//Idem darPistaInvalida
		Pista pista = PistaFactory.obtenerInstancia().crearPistaCercana();		
		return pista;
	}
	public Pista darPista(Grado grado) throws DocumentException {	
		//Segun este en la ciudad correcta o no devuelve pista valida o invalida
		if (((this.ciudadALaQueCorresponde).preguntarSiElLadronSeEscondeEnEstaCiudad()) == true) 
			return (this.darPistaCercana());
		if (!((ciudadALaQueCorresponde.getProximaCiudadALaQueFueElLadron()) == null)) return (this.darPistaValida(grado));		
		else return (this.darPistaInvalida());
	}
	public Pista darPistaSobreElLadron(){
		return pistaSobreElLadron;
	}
	public void setPistaSobreElLadron(Pista pistaDelLadron){
		pistaSobreElLadron = pistaDelLadron;
	}
}
	
